Skip to content

docs: complete 4.0 upgrade guide for merged breaking changes#861

Merged
DavidBadura merged 2 commits into
4.0.xfrom
docs-upgrade-4.0
Jun 14, 2026
Merged

docs: complete 4.0 upgrade guide for merged breaking changes#861
DavidBadura merged 2 commits into
4.0.xfrom
docs-upgrade-4.0

Conversation

@DavidBadura

@DavidBadura DavidBadura commented Jun 13, 2026

Copy link
Copy Markdown
Member

Why

Several breaking changes from already-merged 4.0 PRs were missing from the upgrade guide. This adds them so the guide reflects the current 4.0.x state.

What

Added to docs/UPGRADE-4.0.md:

  • Stream refactor (refactor stream #847): Store\Stream interface removed and replaced by the concrete Message\Stream class; removed store-specific stream implementations (ArrayStream, StreamDoctrineDbalStoreStream, TaggableDoctrineDbalStoreStream, GeneratorStream); Message\Pipe removed in favor of Stream::transform() (with before/after example).
  • remove deprecated subscriber util and helper #805: removed deprecated SubscriberHelper and SubscriberUtil trait.
  • remove deprecations in subscriptions #756: removed SubscriberAccessor / RealSubscriberAccessor interfaces (use MetadataSubscriberAccessor directly), removed deprecated id()/group()/runMode() accessor methods, removed AggregateIdArgumentResolver.
  • use type info in argument resolver #814: ArgumentMetadata::$type is now a Symfony\Component\TypeInfo\Type instead of string + allowsNull.

Updated docs/message.md:

  • Reworked the Pipe section into a Stream section using the new Stream::transform() API.

Notes

@github-actions

github-actions Bot commented Jun 13, 2026

Copy link
Copy Markdown

Hello 👋

here is the most recent benchmark result:

SplitStreamBench
================

+-------------------------+--------------------+--------------------+-----------+-----------------+------------+-------------+
|                         | time (kde mode)                                     | memory                                     |
+-------------------------+--------------------+--------------------+-----------+-----------------+------------+-------------+
| subject                 | Tag: <current>     | Tag: base          | time-diff | Tag: <current>  | Tag: base  | memory-diff |
+-------------------------+--------------------+--------------------+-----------+-----------------+------------+-------------+
| benchLoad10000Events () | 3.553ms (±0.00%)   | 3.484ms (±0.00%)   | +2.01%    | 35.834mb        | 36.286mb   | -1.25%      |
| benchSave10000Events () | 500.519ms (±0.00%) | 512.563ms (±0.00%) | -2.35%    | 35.903mb        | 36.421mb   | -1.42%      |
+-------------------------+--------------------+--------------------+-----------+-----------------+------------+-------------+

SimpleSetupStreamStoreBench
===========================

+----------------------------------------+--------------------+--------------------+-----------+-----------------+------------+-------------+
|                                        | time (kde mode)                                     | memory                                     |
+----------------------------------------+--------------------+--------------------+-----------+-----------------+------------+-------------+
| subject                                | Tag: <current>     | Tag: base          | time-diff | Tag: <current>  | Tag: base  | memory-diff |
+----------------------------------------+--------------------+--------------------+-----------+-----------------+------------+-------------+
| benchLoad1Event ()                     | 1.174ms (±0.00%)   | 1.192ms (±0.00%)   | -1.53%    | 35.140mb        | 35.140mb   | 0.00%       |
| benchLoad10000Events ()                | 72.937ms (±0.00%)  | 71.709ms (±0.00%)  | +1.71%    | 35.140mb        | 35.140mb   | 0.00%       |
| benchSave1Event ()                     | 1.449ms (±0.00%)   | 1.454ms (±0.00%)   | -0.36%    | 35.140mb        | 35.140mb   | 0.00%       |
| benchSave10000Events ()                | 284.145ms (±0.00%) | 288.048ms (±0.00%) | -1.36%    | 35.140mb        | 35.140mb   | 0.00%       |
| benchSave10000Aggregates ()            | 9.011s (±0.00%)    | 8.887s (±0.00%)    | +1.39%    | 35.140mb        | 35.140mb   | 0.00%       |
| benchSave10000AggregatesTransaction () | 5.688s (±0.00%)    | 5.691s (±0.00%)    | -0.04%    | 35.140mb        | 35.140mb   | 0.00%       |
+----------------------------------------+--------------------+--------------------+-----------+-----------------+------------+-------------+

SubscriptionEngineBatchBench
============================

+---------------------------+--------------------+--------------------+-----------+-----------------+------------+-------------+
|                           | time (kde mode)                                     | memory                                     |
+---------------------------+--------------------+--------------------+-----------+-----------------+------------+-------------+
| subject                   | Tag: <current>     | Tag: base          | time-diff | Tag: <current>  | Tag: base  | memory-diff |
+---------------------------+--------------------+--------------------+-----------+-----------------+------------+-------------+
| benchHandle10000Events () | 103.089ms (±0.00%) | 100.480ms (±0.00%) | +2.60%    | 35.720mb        | 35.720mb   | 0.00%       |
+---------------------------+--------------------+--------------------+-----------+-----------------+------------+-------------+

SubscriptionEngineBench
=======================

+---------------------------+-----------------+-----------------+-----------+-----------------+------------+-------------+
|                           | time (kde mode)                               | memory                                     |
+---------------------------+-----------------+-----------------+-----------+-----------------+------------+-------------+
| subject                   | Tag: <current>  | Tag: base       | time-diff | Tag: <current>  | Tag: base  | memory-diff |
+---------------------------+-----------------+-----------------+-----------+-----------------+------------+-------------+
| benchHandle10000Events () | 3.499s (±0.00%) | 3.478s (±0.00%) | +0.59%    | 48.293mb        | 48.293mb   | 0.00%       |
+---------------------------+-----------------+-----------------+-----------+-----------------+------------+-------------+

CommandToQueryBench
===================

+----------------+------------------+------------------+-----------+-----------------+------------+-------------+
|                | time (kde mode)                                 | memory                                     |
+----------------+------------------+------------------+-----------+-----------------+------------+-------------+
| subject        | Tag: <current>   | Tag: base        | time-diff | Tag: <current>  | Tag: base  | memory-diff |
+----------------+------------------+------------------+-----------+-----------------+------------+-------------+
| benchCreate () | 2.722ms (±0.00%) | 2.778ms (±0.00%) | -2.03%    | 5.005mb         | 5.005mb    | 0.00%       |
| benchUpdate () | 4.065ms (±0.00%) | 4.146ms (±0.00%) | -1.95%    | 5.014mb         | 5.014mb    | 0.00%       |
| benchBoth ()   | 7.184ms (±0.00%) | 7.357ms (±0.00%) | -2.36%    | 5.752mb         | 5.752mb    | 0.00%       |
+----------------+------------------+------------------+-----------+-----------------+------------+-------------+

PersonalDataBench
=================

+----------------------------------------+--------------------+--------------------+-----------+-----------------+------------+-------------+
|                                        | time (kde mode)                                     | memory                                     |
+----------------------------------------+--------------------+--------------------+-----------+-----------------+------------+-------------+
| subject                                | Tag: <current>     | Tag: base          | time-diff | Tag: <current>  | Tag: base  | memory-diff |
+----------------------------------------+--------------------+--------------------+-----------+-----------------+------------+-------------+
| benchLoad1Event ()                     | 1.194ms (±0.00%)   | 1.212ms (±0.00%)   | -1.46%    | 35.804mb        | 35.804mb   | 0.00%       |
| benchLoad10000Events ()                | 109.736ms (±0.00%) | 109.140ms (±0.00%) | +0.55%    | 35.804mb        | 35.804mb   | 0.00%       |
| benchSave1Event ()                     | 1.892ms (±0.00%)   | 1.811ms (±0.00%)   | +4.44%    | 35.804mb        | 35.804mb   | 0.00%       |
| benchSave10000Events ()                | 315.239ms (±0.00%) | 311.908ms (±0.00%) | +1.07%    | 35.806mb        | 35.806mb   | 0.00%       |
| benchSave10000Aggregates ()            | 13.691s (±0.00%)   | 13.836s (±0.00%)   | -1.05%    | 35.804mb        | 35.804mb   | 0.00%       |
| benchSave10000AggregatesTransaction () | 10.357s (±0.00%)   | 10.353s (±0.00%)   | +0.05%    | 36.044mb        | 36.044mb   | 0.00%       |
+----------------------------------------+--------------------+--------------------+-----------+-----------------+------------+-------------+

SnapshotsBench
==============

+----------------------------------------+-------------------+-------------------+-----------+-----------------+------------+-------------+
|                                        | time (kde mode)                                   | memory                                     |
+----------------------------------------+-------------------+-------------------+-----------+-----------------+------------+-------------+
| subject                                | Tag: <current>    | Tag: base         | time-diff | Tag: <current>  | Tag: base  | memory-diff |
+----------------------------------------+-------------------+-------------------+-----------+-----------------+------------+-------------+
| benchLoad10000EventsMissingSnapshot () | 71.753ms (±0.00%) | 72.542ms (±0.00%) | -1.09%    | 35.210mb        | 35.210mb   | 0.00%       |
| benchLoad10000Events ()                | 1.372ms (±0.00%)  | 1.371ms (±0.00%)  | +0.12%    | 35.210mb        | 35.210mb   | 0.00%       |
+----------------------------------------+-------------------+-------------------+-----------+-----------------+------------+-------------+

SimpleSetupTaggableStoreBench
=============================

+----------------------------------------+--------------------+--------------------+-----------+-----------------+------------+-------------+
|                                        | time (kde mode)                                     | memory                                     |
+----------------------------------------+--------------------+--------------------+-----------+-----------------+------------+-------------+
| subject                                | Tag: <current>     | Tag: base          | time-diff | Tag: <current>  | Tag: base  | memory-diff |
+----------------------------------------+--------------------+--------------------+-----------+-----------------+------------+-------------+
| benchLoad1Event ()                     | 1.127ms (±0.00%)   | 1.127ms (±0.00%)   | -0.01%    | 36.306mb        | 36.306mb   | 0.00%       |
| benchLoad10000Events ()                | 75.147ms (±0.00%)  | 75.460ms (±0.00%)  | -0.42%    | 36.306mb        | 36.306mb   | 0.00%       |
| benchSave1Event ()                     | 1.443ms (±0.00%)   | 1.390ms (±0.00%)   | +3.84%    | 36.306mb        | 36.306mb   | 0.00%       |
| benchSave10000Events ()                | 304.212ms (±0.00%) | 304.021ms (±0.00%) | +0.06%    | 36.306mb        | 36.306mb   | 0.00%       |
| benchSave10000Aggregates ()            | 8.979s (±0.00%)    | 9.043s (±0.00%)    | -0.70%    | 36.306mb        | 36.306mb   | 0.00%       |
| benchSave10000AggregatesTransaction () | 5.746s (±0.00%)    | 5.698s (±0.00%)    | +0.84%    | 36.306mb        | 36.306mb   | 0.00%       |
| benchAppend1Event ()                   | 1.526ms (±0.00%)   | 1.521ms (±0.00%)   | +0.34%    | 36.306mb        | 36.306mb   | 0.00%       |
| benchAppend100Events ()                | 7.569ms (±0.00%)   | 7.524ms (±0.00%)   | +0.60%    | 36.306mb        | 36.306mb   | 0.00%       |
+----------------------------------------+--------------------+--------------------+-----------+-----------------+------------+-------------+

This comment gets update everytime a new commit comes in!

Comment thread docs/UPGRADE-4.0.md
Document the breaking changes from the merged 4.0 PRs that were missing
from the upgrade guide:

- stream refactor (#847): Store\Stream interface replaced by the concrete
  Message\Stream class, removed store-specific stream implementations,
  Message\Pipe removed in favor of Stream::transform()
- removed deprecated SubscriberHelper and SubscriberUtil (#805)
- removed SubscriberAccessor / RealSubscriberAccessor interfaces and
  deprecated accessor methods, removed AggregateIdArgumentResolver (#756)
- ArgumentMetadata now carries a symfony/type-info Type (#814)

Also update the message docs Pipe section to use the new Stream API.
Show the recommended const TABLE pattern as replacement for
SubscriberHelper/SubscriberUtil and fix the sprintf argument
placement in the getting-started projector example.
@DavidBadura DavidBadura merged commit f2a55cc into 4.0.x Jun 14, 2026
37 of 39 checks passed
@DavidBadura DavidBadura deleted the docs-upgrade-4.0 branch June 14, 2026 13:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants